Git bisect
fitur yang terdapat pada git untuk mencari commit yang menyebabkan bug. casenya seperti ini, developer menemukan ada kode yang membuat kode menjadi bug sebuah fitur A. bug tersebut ternyata sudah ada dibeberapa commit sebelumnya. untuk menemukan dimana bug tersebut berawal maka git bisect ini bisa sebagai penolong.
git bisect akan melakukan checkout ke beberapa commit berdasarkan point commit yang sudah diset sebelumnya. sebagai contoh berikut
sebelum melakukan track bugnya, jalankan terlebih dahulu dengan perintah berikut
git bisect start
dengan begini makan git bisect sudah berjalan.
langkah selanjutnya tentukan point commit yang dirasa sebagai commit yang tidak ada bugnya
contohnya berikut
d5423cd (HEAD, master) paragrap 6 # --> point commit bad
dc31381 paragrap 5
50b2f22 bug here
f998b47 paragrap 4
9f8db38 paragrap 3
b41c213 paragrap 2
68d0940 paragrap 1
53278d9 add html code # --> point commit good
97d6c46 update html
39619ba initial commit
sekarang set point bad untuk commit HEAD sekarang dengan perintah berikut
git bisect bad
atau jika ingin menentukan dengan commit bisa menggunakan perintah berikut
git bisect bad <commit bad>
selanjutnya set juga untuk point commit good dengan perintah perintah berikut
git bisect good 53278d9
jika commit bad dan goodnya sudah diataru maka git akan melakukan checkout ke beberapa commit. developer bisa menentukan commit tersebut termasuk kategori bad atau good. lakukan sampai git bisect menemukan commit yang terdapat bugnya. biasanya akan muncul commit seperti ini.
dan commit akan dicheckout ke commit sebelum bug tersebut muncul
❯ git bisect bad
50b2f228a7e69e76d9574b3b76d11224d1a1840b is the first bad commit
commit 50b2f228a7e69e76d9574b3b76d11224d1a1840b
Author: Wisnu Box <developer@mail.com>
Date: Mon Oct 28 10:52:33 2024 +0700
bug here
index.html | 1 +
1 file changed, 1 insertion(+)
apabila ingin stop bisect bisa menggunakan perintah berikut
git bisect reset
maka commit akan dipindahkan ke commit HEAD pertama kali/terakhir